package com.csyf.manager.controller;

import com.csyf.manager.channel.base.BalanceEnum;
import com.csyf.manager.channel.base.ServiceEnum;
import com.csyf.manager.entity.SysFreeze;
import com.csyf.manager.entity.SysTrade;
import com.csyf.manager.exception.ApiValidateException;
import com.csyf.manager.service.OrderService;
import com.csyf.manager.service.SysFreezeBiz;
import com.csyf.manager.service.impl.SysAgentBalanceBiz;
import com.csyf.manager.utils.ReturnData;
import com.csyf.manager.utils.page.JqGridVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.Date;

/**
 * 冻结订单
 */
@Controller
@RequestMapping(value = "boss/freeze")
public class SysFreezeController {

    @Autowired
    private OrderService orderService;

    @Autowired
    private SysAgentBalanceBiz sysAgentBalanceBiz;

    @Autowired
    private SysFreezeBiz sysFreezeBiz;

    @GetMapping(value = "view/{pageName}")
    public String viewPage(@PathVariable(value = "pageName") String pagename) {
        return "boss/" + pagename;
    }

    /**
     * 冻结列表
     * @param vo
     * @param rows
     * @param page
     * @return
     */
    @ResponseBody
    @PostMapping(value = "freezeDataList")
    public JqGridVo freezeDataList(SysFreeze vo, Integer rows, Integer page) {

        return sysFreezeBiz.querydata(vo, rows, page);
    }


    /**
     * 冻结订单(上游冻结金额+冻结商户金额)
     * @param vo
     * @return
     */
//    @ResponseBody
//    @RequestMapping(value = "freezeOrder")
//    public ReturnData freezeOrder(SysFreeze vo) {
//        ReturnData returnData = new ReturnData();
//        if (null == vo.getMchFreezeFee()) {
//            returnData.setCode(10);
//            returnData.setMsg("冻结金额不能为空！");
//            return returnData;
//        }
//
//        try {
//            SysTrade trade = orderService.queryOrderByOrderNo(vo.getOutTradeNo());
//
//            if (null == trade) {
//                returnData.setCode(10);
//                returnData.setMsg("该订单不存在！");
//                return returnData;
//            } else {
//                //判断交易对应的余额类型
//                String balanceType = "";
//                ServiceEnum serviceEnum = ServiceEnum.valueOf(trade.getServiceType());
//                switch (serviceEnum) {
//                    case YYT_WEB:
//                        balanceType = String.valueOf(BalanceEnum.YYT_PAY);
//                        break;
//                    case ZG_WAP:
//                        balanceType = String.valueOf(BalanceEnum.ZG_PAY);
//                        break;
//                    case ZG_QQ_SM:
//                        balanceType = String.valueOf(BalanceEnum.ZG_QQ);
//                        break;
//                    case BPAY_ALI_H5:
//                        balanceType = String.valueOf(BalanceEnum.BPAY_ALI);
//                        break;
//                    default:
//                        throw new ApiValidateException("冻结类型未配置，请联系技术");
//                }
//
//                //减去商户的可用余额且更新商户冻结金额
//                sysAgentBalanceBiz.updateMchTotalMoney(trade.getAgentId(), balanceType, vo.getMchFreezeFee());
//
//                //插入冻结记录
//                SysFreeze entity = new SysFreeze();
//                entity.setMchId(trade.getMchId());
//                entity.setSrcMchId(trade.getSrcMchId());
//                entity.setAgentName(trade.getAgentName());
//                entity.setOutTradeNo(trade.getOutTradeNo());
//                entity.setSrcOrderNo(trade.getSrcOrderNo());
//                entity.setServiceType(trade.getServiceType());
//                entity.setTotalFee(trade.getTotalFee());
//                entity.setSrcFreezeFee(vo.getSrcFreezeFee());
//                entity.setMchFreezeFee(vo.getMchFreezeFee());
//                entity.setOrderTime(trade.getPayTime());
//                entity.setFreezeTime(new Date());
//                entity.setFreezeStatus("1");
//                sysFreezeBiz.insert(entity);
//
//                returnData.setCode(0);
//                returnData.setMsg("冻结成功");
//            }
//        } catch (ApiValidateException e) {
//            returnData.setCode(10);
//            returnData.setMsg(e.getMessage());
//        } catch (Exception e) {
//            e.printStackTrace();
//            returnData.setCode(10);
//            returnData.setMsg("冻结失败，请联系技术！");
//        }
//        return returnData;
//    }

}
